package org.multimedia.jolitorask.utilisateur;

import java.rmi.RemoteException;
import java.util.Collection;

import javax.ejb.CreateException;
import javax.ejb.EJBException;
import javax.ejb.EntityBean;
import javax.ejb.EntityContext;
import javax.ejb.FinderException;
import javax.ejb.RemoveException;

import org.multimedia.jolitorask.client.ClientLocal;
import org.multimedia.jolitorask.utilisateur.exception.UtilisateurException;


public abstract class UtilisateurEntity implements EntityBean{

	private static final long serialVersionUID = 1L;

	  // Contexte de l'EJB
	  @SuppressWarnings("unused")
	  private EntityContext context;
	   
	 
	  public abstract Integer getId();
	  public abstract void setId(Integer i);
	  
	  public abstract void setLogin(String login);
	  public abstract String getLogin();
	  
	  public abstract void setPassword(String pass);
	  public abstract String getPassword();
	  
	  // Fonction promise dans l'interface distante
	  public abstract String getNom();
	  // Fonction promise dans l'interface distante
	  public abstract String getPrenom();

	   // Fonction promise dans l'interface distante
	  public abstract void setPrenom(String prenom);
	  // Fonction promise dans l'interface distante
	  public abstract void setNom(String nom);
	  
	  
	  public abstract ClientLocal getClient();
	  public abstract void setClient(ClientLocal c);

	  @SuppressWarnings("unchecked")
	  public abstract void setTelephones(Collection c);
	  @SuppressWarnings("unchecked")
	  public abstract Collection getTelephones();
	  
	  // Cr�e le composant et le sauvegarde dans la base de donn�es avec un insert
	  @SuppressWarnings("unchecked")
	  public  Integer ejbCreate(Integer id, String login, String pass, String nom, String prenom, ClientLocal client) throws CreateException {
		  
		  try {
			  UtilisateurLocalHome userHome = (UtilisateurLocalHome)context.getEJBLocalHome();
			  
			  Collection c = userHome.findByClientAndLogin( client.getLogin(), login);
			  if( c != null && !c.isEmpty() )
				  throw new UtilisateurException(login);
		  } catch (FinderException e) {
			  e.printStackTrace();
		  }
		  
		  
		  setId(id);
		  setLogin(login);
		  setPassword(pass);
		  setNom(nom);
		  setPrenom(prenom);
		  
		  return id;
	  }

	  
	 public void ejbPostCreate(Integer id, String login, String pass, String nom, String prenom, ClientLocal client) throws EJBException{
		  
		  setClient( client );
	 }
	  
	public void ejbActivate() throws EJBException, RemoteException {
	}

	public void ejbLoad() throws EJBException, RemoteException {
	}

	public void ejbPassivate() throws EJBException, RemoteException {
	}

	public void ejbRemove() throws RemoveException, EJBException,
			RemoteException {
	}

	public void ejbStore() throws EJBException, RemoteException {
		// TODO Auto-generated method stub

	}

	public void setEntityContext(EntityContext arg0) throws EJBException,
			RemoteException {
		context = arg0;

	}

	public void unsetEntityContext() throws EJBException, RemoteException {
		context = null;
	}

}
